package grupo2.strategies;

import grupo2.bj.Apostador;
import grupo2.bj.Carta;
import grupo2.bj.Jugador;

import java.util.ArrayList;

public class EstrategiaAbrir implements EstrategiaJuego{
	
	private Apostador clon;
	private Apostador j;
	private Apuesta apuesta;

	public EstrategiaAbrir(Apostador j) {
		super();
		this.j = j;
		this.apuesta = new ApuestaAbrir(this.j);
	}

	public Apuesta getApuesta() {
		return this.apuesta;
	}

	public void jugar() {
		try{
			this.clon = this.setearJugador(j.clonate(), j.getCartas().get(1));
			this.quitarCarta();
			this.realizarApuesta();
			this.juga(j);
			this.juga(clon);
		}
		catch(CloneNotSupportedException e){
			System.out.println(e.getMessage());
			e.printStackTrace();
		}
	}

	public void realizarApuesta() {
		j.setApuesta(j.getApuesta()*2);
		j.setDinero(j.getDinero() - j.getApuesta());
	}
	
	public void pagarApuesta(){
		this.getApuesta().pagarApuesta();
	}
	
	public void retirarDinero(){
		this.getApuesta().retirarDinero();
	}
	
	private Apostador setearJugador(Apostador clon, Carta carta){
		clon.setCartas(new ArrayList<Carta>());
		clon.getCartas().add(carta);
		return clon;
	}
	
	public Apostador getClon(){
		return this.clon;
	}
	
	public Apostador getOriginal(){
		return this.j;
	}
	
	private void juga(Apostador j){
		while(j.convieneSeguir() && !j.tengo6Cartas())
			j.pedirCarta();
		if(j.tengo6Cartas())
			j.cambiarA6Cartas();
	}
	
	private void quitarCarta(){
		j.getCartas().remove(1);
	}
	
	public void getPuntaje(){
		Jugador.getMesa().realizarAccion(j);
		Jugador.getMesa().realizarAccion(this.getClon());
		j.setApuesta(0);
		//System.out.println("EL jugador y el clon realizaron accion");
	}
}